// 定义纯函数（在纯函数内部不能书写任何有副作用的代码，例如发请求、定时器、事件监听、new Data（））并进行默认导出
// 副作用：不知道什么时候可以结束
// 参数一：初始状态，参数二：触发的action行为
var data = {
    user_favor_list: [],
}
function reducer(state = data, action = { type: 'ADD', payload: null }) {
    //对state进行深拷贝
    var newState = JSON.parse(JSON.stringify(state))
    switch (action.type) {
        case 'STORE_FAVOR_LIST':
            newState.user_favor_list = action.payload;
            console.log(newState);
            return newState;
        case 'STORE_FAVOR_LIST_ADD':
            newState.user_favor_list.push(action.payload)
            return newState;
        case 'STORE_FAVOR_LIST_SUB':

            var SUBIndex = newState.user_favor_list.findIndex((item) => {
                return item.id == action.payload.id;
            })
            newState.user_favor_list.splice(SUBIndex, 1)
            return newState;
        default: return state;
    }

}
// 也可以使用switch
// 必须返回新的state（如果触发了action，则一定意味着state会被修改，如果没有触发action，
// 则state一定不会修改）
export default reducer;